readyState এবং status হলো XMLHttpRequest অবজেক্টের দুটি গুরুত্বপূর্ণ প্রপার্টি, যা Ajax রিকোয়েস্টের অবস্থান এবং সার্ভারের রেসপন্স চেক করতে ব্যবহৃত হয়। এগুলোর মাধ্যমে আমরা জানতে পারি যে রিকোয়েস্টটি সম্পূর্ণ হয়েছে কিনা এবং সফল হয়েছে কিনা। এই প্রপার্টিগুলোর মাধ্যমে রেসপন্স ম্যানেজমেন্ট করা হয়। নিচে readyState এবং status এর বিস্তারিত ব্যাখ্যা এবং কিভাবে এগুলো ব্যবহার করে রেসপন্স ম্যানেজ করা হয়, তা নিয়ে আলোচনা করা হলো।
১. readyState:
readyState প্রপার্টি রিকোয়েস্টের বর্তমান অবস্থান নির্দেশ করে। এটি XMLHttpRequest এর একটি বিল্ট-ইন প্রপার্টি, যার ভ্যালু ০ থেকে ৪ পর্যন্ত হতে পারে। প্রতিটি ভ্যালু একটি নির্দিষ্ট অবস্থার নির্দেশ করে।
readyState এর ভ্যালুগুলো:
| ভ্যালু | অবস্থা | বর্ণনা |
|---|---|---|
| 0 | UNSENT | রিকোয়েস্টটি তৈরি হয়েছে কিন্তু এখনও ওপেন করা হয়নি। |
| 1 | OPENED | open() মেথড কল করা হয়েছে, কিন্তু send() এখনও কল করা হয়নি। |
| 2 | HEADERS_RECEIVED | রিকোয়েস্ট পাঠানো হয়েছে, এবং সার্ভার থেকে হেডার রিসিভ করা হয়েছে। |
| 3 | LOADING | রিকোয়েস্ট প্রসেসিং চলছে এবং সার্ভার থেকে কিছু রেসপন্স আসছে। |
| 4 | DONE | রিকোয়েস্ট সম্পূর্ণ হয়েছে এবং সার্ভার থেকে পুরো রেসপন্স পাওয়া গেছে। |
- ব্যবহার: আমরা সাধারণত
readyState === 4চেক করি, যা নির্দেশ করে রিকোয়েস্ট সম্পূর্ণ হয়েছে।
২. status:
status প্রপার্টি HTTP স্ট্যাটাস কোড নির্দেশ করে, যা সার্ভার থেকে রেসপন্স হিসেবে আসে। এটি XMLHttpRequest এর একটি প্রপার্টি, যা রিকোয়েস্টের সফলতা বা ব্যর্থতা যাচাই করতে ব্যবহৃত হয়।
সাধারণ HTTP Status Codes:
| স্ট্যাটাস কোড | অর্থ | বর্ণনা |
|---|---|---|
| 200 | OK | রিকোয়েস্ট সফল হয়েছে এবং সার্ভার থেকে সঠিক রেসপন্স এসেছে। |
| 404 | Not Found | রিকোয়েস্ট করা রিসোর্সটি সার্ভারে পাওয়া যায়নি। |
| 500 | Internal Server Error | সার্ভারে কোনো সমস্যা হয়েছে। |
- ব্যবহার: আমরা সাধারণত
status === 200চেক করি, যা নির্দেশ করে রিকোয়েস্ট সফল হয়েছে।
readyState এবং status এর মাধ্যমে Response Management
readyState এবং status একসাথে ব্যবহার করে আমরা রিকোয়েস্টের সফলতা বা ব্যর্থতা চেক করতে পারি এবং তার উপর ভিত্তি করে উপযুক্ত এক্সেকিউশন করতে পারি।
উদাহরণ:
function fetchData() {
var xhr = new XMLHttpRequest(); // XMLHttpRequest অবজেক্ট তৈরি করা
xhr.open("GET", "https://jsonplaceholder.typicode.com/posts/1", true); // রিকোয়েস্ট ওপেন করা
// রেসপন্স ম্যানেজমেন্টের জন্য onreadystatechange ইভেন্ট হ্যান্ডলার সেট করা
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) { // রিকোয়েস্ট সম্পূর্ণ হয়েছে কিনা তা চেক করা
if (xhr.status === 200) { // রিকোয়েস্ট সফল হয়েছে কিনা তা চেক করা
var data = JSON.parse(xhr.responseText); // JSON ডেটা প্রসেস করা
document.getElementById("data-container").innerHTML = `
<h2>${data.title}</h2>
<p>${data.body}</p>
`;
} else {
// যদি রিকোয়েস্ট ব্যর্থ হয়, তাহলে এরর মেসেজ দেখানো
document.getElementById("data-container").innerHTML = "Error fetching data. Status code: " + xhr.status;
}
}
};
xhr.send(); // রিকোয়েস্ট পাঠানো
}
ব্যাখ্যা:
readyStateচেক করা:xhr.onreadystatechangeইভেন্ট হ্যান্ডলার ব্যবহার করে চেক করা হয়েছে যেxhr.readyState === 4কিনা। এটি নির্দেশ করে যে রিকোয়েস্ট সম্পূর্ণ হয়েছে এবং সার্ভার থেকে পুরো রেসপন্স পাওয়া গেছে।
statusচেক করা:- যদি
xhr.readyState === 4হয়, তাহলেxhr.status === 200চেক করা হয়েছে, যা নির্দেশ করে যে রিকোয়েস্ট সফল এবং সার্ভার থেকে সঠিক রেসপন্স এসেছে। - যদি
status === 200না হয়, তাহলে একটি এরর মেসেজ দেখানো হয়েছে এবং স্ট্যাটাস কোড প্রদর্শন করা হয়েছে।
- যদি
readyState এবং status এর মাধ্যমে Response Handling এর ধাপ:
readyState === 4চেক করা:- রিকোয়েস্ট সম্পূর্ণ হলে নিশ্চিত হওয়া যায় যে সার্ভার থেকে পুরো রেসপন্স পাওয়া গেছে।
status === 200চেক করা:- সফল রিকোয়েস্ট হলে ডেটা প্রসেস করা হয় এবং HTML DOM আপডেট করা হয়।
- এরর ম্যানেজমেন্ট:
- যদি
status !== 200হয়, তাহলে একটি এরর মেসেজ প্রদর্শন করা হয় যা ইউজারকে জানায় যে রিকোয়েস্ট ব্যর্থ হয়েছে।
- যদি
সারসংক্ষেপ:
readyState: রিকোয়েস্টের অবস্থা নির্দেশ করে (0 থেকে 4 পর্যন্ত)। আমরা সাধারণতreadyState === 4চেক করি।status: সার্ভারের রেসপন্সের সফলতা নির্দেশ করে (HTTP স্ট্যাটাস কোড, যেমন 200)। আমরা সাধারণতstatus === 200চেক করি।
readyState এবং status একসাথে ব্যবহার করে Ajax রিকোয়েস্টের রেসপন্স ম্যানেজ করা হয়, যা ওয়েব অ্যাপ্লিকেশনকে ডায়নামিক এবং ইন্টারেক্টিভ করতে সাহায্য করে।
Read more